def demo(a1,a2):
    print(a1,a2)
demo(1,2)

def demo2(a1,a2=2):
    print(a1,a2)

demo2(1,3)

def demo3(*args):
    print(args)
    for i in args:
        print(i,end=" ")

demo3(1,2,3,4)

def demo4(*args): #*args表示将可变长度的参数打包成一个元组,这里传入一个生成器
    print(args)
    for i in args:
        print(i,end=" ")

gen=(x for x in range(10))
gen2=[x for x in range(10)]
demo4(*gen)
demo4(*gen2)
print("")


map_def={"1":"one","2":"two"}
def demo5(**kwargs):
    for key,value in kwargs.items():
        print(key,value)

demo5(**map_def)

def demo6(money):
    new_money=money*0.8
    return money,new_money  #如果返回的值有多个的话，返回元组；如果返回值只有则表示返回一个元素
money=demo6(100)
print(money[0],money[1])
print(money)    #返回元组
for i in money:
    print(i,end=" ")
print()
"""
在py中方法可以使用lambda
"""
print("lambda")
#格式：result=lambda 参数列表:表达式
result=lambda x,y:x+y#将会自动返回x+y的值
"""
等价于
def result(x,y):
    return x+y
"""
print(result(1,2))

# result=lambda *x:x 理论上可以像上面方法那样，加了*表示将可变长度的参数打包成一个元组/列表/集合，加**表示将可变长度的参数打包成一个字典
# print(result(1,2,3,4,5))  
def demo7(kwargs):
    return kwargs
print(demo7(5))